// 使用 axios 来给后端进行数据交互
import axios from 'axios'
import { getToken, removeToken } from './cookie';
import router from '@/router';

axios.defaults.headers["Content-Type"] = "application/json;charset=utf-8"

const service = axios.create({
  baseURL: '/dev-api',
  timeout: 5000,
});

// 请求拦截器
service.interceptors.request.use(
  (rep) => {
    if (getToken()) {
      rep.headers['Authorization'] = "Bearer " + getToken(); // 在请求头中添加token指端, 并添加前缀
    }
    return rep;
  }, (error) => {
    console.log(error);
    Promise.reject(error);
  }
)


// 后端数据返回给前段时, 用拦截器拦截
service.interceptors.response.use(
  (res) => {
    // 未设置状态码则默认成功状态
    const code = res.data.code;
    const msg = res.data.msg;
    // token已过期,直接跳转到登录页面
    if (code === 3001) {
      ElMessage.error(msg); // 弹出错误信息
      // token过期, 那么删除掉
      removeToken()
      return Promise.reject(new Error(msg)); // 返回后端的Result的错误信息
    } else if (code !== 1000) {
      ElMessage.error(msg);
      return Promise.reject(new Error(msg));
    } else {
      return Promise.resolve(res.data);
    }
  },
  (error) => {
    return Promise.reject(error);
  }
);


export default service